package org.dtrevien.yuml.parser;

import java.util.EventListener;
import java.util.List;

import org.dtrevien.yuml.model.Cardinality;
import org.dtrevien.yuml.model.Member;
import org.dtrevien.yuml.model.Param;


public interface YumlEventListener extends EventListener {

	public void startYUML();
	
	public void endYUML();
	
	/**
	 * On class readable event
	 * @param name
	 */
	public void onClassEvent(String name);
	
	/**
	 * On note (comment) event
	 * @param text
	 */
	public void onNoteEvent(String text);
	
	public void onAggregationEvent(String fartherClassName, String childClassName);
	
	public void onCompositionEvent(String fartherClassName, String childClassName);
	
	public void onCardinalityEvent(Cardinality c, String tempClass0, String tempClass1);
	
	public void onInheritanceEvent(String farther, String child);
	
	public void onDependenciesEvent();
	
	public void onDirectionalEvent(String fartherClassName, String childClassName);
	
	public void onBidirectionalEvent(String fartherClassName, String childClassName);
	
	public void onLabelsEvent(String label, Member member);
	
	public void onNewLineEvent();

	public void onClassAttributeEvent(String fartherClass, String name, String type, String visibility);

	public void onClassMethodEvent(String fartherClass, String name, String returnType, List<Param> params, String visibility);

	public void onImplementationEvent(String fartherClass, String childClassName);
	
}
